perm filename ARMFN[SYS,HE]9 blob
sn#064723 filedate 1973-09-28 generic text, type T, neo UTF8
00100 COMMENT ⊗ VALID 00013 PAGES
00200 RECORD PAGE DESCRIPTION
00300 00001 00001
00400 00003 00002 HOPEN: OPENS THE HAND TO SET POINT
00500 00005 00003 HCLOSE:
00600 00007 00004 HEAD: MOVEI K,HANDCHA
00700 00009 00005 GOTHER: FSBR AC,TAC HAND SERVO
00800 00010 00006 PLACE: PLACE HAND ON TABLE
00900 00011 00007 NUDGE: HRRE TAC,@STKPTR
01000 00013 00008 PATH: TRO RUN
01100 00015 00009 SAVE: HRRE K,@STKPTR
01200 00018 00010 CENTER: TRNN HCL
01300 00021 00011 SEARCH: SETZM XSEL
01400 00024 00012 REFLEX: MOVEI I,1
01500 00025 00013 XLIST
01600 00026 ENDMK
01700 ⊗;
00100 HOPEN: ;OPENS THE HAND TO SET POINT
00200 TRNN HCL
00300 JRST[ MOVEI TAC,=480 ;GO HERE FIRST TIME
00400 MOVEM TAC,HCNT ;MAX TIME TO SERVO THERE
00500 ADDI TAC,=60
00600 MOVEM TAC,COUNT
00700 HRLZ AC,@STKPTR ;REQUIRED OPENING
00800 MOVE MQ,[3.6]
00900 CAML AC,MQ
01000 MOVE AC,MQ ;NOT GREATER THAN 2.5
01100 MOVEM AC,RSET ;REQUIRED FINAL SET POINT
01200 IFE USER,< PUSHJ P,HEAD ;READS THE HAND>
01300 MOVE AC,HAND ;AND STORE IT HERE
01400 MOVEM AC,SET ;DYNAMIC SET POINT
01500 TRZ STCH ;TURN OFF TOUCH AND SAVE STATE
01600 MOVE TAC,[0.2]
01700 CAML AC,RSET
01800 MOVN TAC,TAC
01900 MOVEM TAC,DIR ;CHANGE OF SET POINT PER JIFFY
02000 TRO HCL ;SO THAT WE DON'T COME BACK HERE
02100 JUMPGE TAC,NXTJIF
02200 FSC TAC,-1 ;IF CLOSING GO SLOWER
02300 MOVEM TAC,DIR
02400 SKIPE SOTCH ;AND RESTORE TOUCH
02500 TRO STCH
02600 JRST NXTJIF]
02700 HSU: PUSHJ P, HEAD ;INCREMENTS SETPOINT AND SETS D/A
02800 ;LEAVES ARM DATAO IN TAC
02900 IFE HANDWORK <
03000 JRST NEXT
03100 >
03200 SOSGE HCNT
03300 JRST[ MOVEI AC,HTERR
03400 MOVEM AC,TRAJER
03500 POP P,AC
03600 JRST TOFF]
03700 SKIPE DIR
03800 JRST DAW ;IF NOT AT FINAL SET DRIVE ANYWAY
03900 MOVE AC,RSET
04000 FSBR AC,HAND ;CHECK ERROR TOLERANCE
04100 MOVM AC,AC
04200 FSBR AC,[0.05]
04300 JUMPLE AC,[ TRZ HCL
04400 TDZ DATWD,HANDAT
04500 JRST NEXT]
04600 DAW:
04700 IFN TRACK,<SKIPN WALK>
04800 DATAO ARM,DATWD ;DRIVE HAND
04900 JRST NXTJIF
05000
00100 HCLOSE:
00200 TRNN HCL ;ONLY ONCE
00300 JRST[ TRZ STCH ;TURN OFF TOUCH AND SAVE STATE
00400 MOVEI TAC,=240
00500 MOVEM TAC,COUNT
00600 HRLZ AC,@STKPTR ;MINIMUN OPENING
00700 MOVEM AC,MINDST
00800 IFE USER,< PUSHJ P,HEAD ;READ HAND>
00900 MOVE AC,HAND
01000 MOVEM AC,SET
01100 MOVE TAC,[-0.10]
01200 MOVEM TAC,DIR ;CHANGE OF SET POINT PER JIFFY
01300 MOVSI AC,(4.0)
01400 MOVNM AC,RSET ;FINAL SET POINT -1 SO AS TO SQUEEZE
01500 TRO HCL
01600 JRST NXTJIF]
01700 BB: PUSHJ P,HEAD
01800 IFE HANDWORK <
01900 JRST ER2
02000 >
02100 IFN TRACK,<SKIPN WALK>
02200 DATAO ARM,DATWD ;DRIVE HAND
02300 MOVE AC,HERR
02400 CAMG AC,[1.00]
02500 JRST NXTJIF ;IF ERROR LESS THAN 1 KEEP ON
02600 ER2: TRZ HCL
02700 TDZ DATWD,HANDAT
02800 SKIPE SOTCH ;RESTORE TOUCH
02900 TRO STCH
03000 MOVE AC,MINDST
03100 CAMG AC,HAND
03200 JRST NEXT
03300 MOVEI 1,GRASER ;IF LESS THAN MINOPENING GIVE ERROR
03400 MOVEM 1,TRAJER
03500 POP P,1
03600 JRST TOFF
03700
00100 HEAD: MOVEI K,HANDCHA
00200 IFE USER,<
00300 PUSHJ P,PREAD ;READ HAND CHANNEL
00400 LDB AC,SNUM
00500 ANDI DACVAL,7777
00600 ADDI AC,(DACVAL) ;ADD ALL THREE READINGS TOGETHER
00700 FSC AC,220
00800 FMPR AC,HSCALE
00900 FADR AC,HOFF
01000 MOVEM AC,HAND ;OPENING IN INCHES
01100 >
01200 IFN USER,<
01300 MOVE AC,FUNCT
01400 CAIN AC,1
01500 JRST[ SKIPN DIR
01600 JRST[ MOVE AC,RSET
01700 JRST SFH]
01800 MOVE AC,HAND
01900 FADR AC,DIR
02000 JRST SFH]
02100 MOVE AC,HAND
02200 FADR AC,DIR
02300 CAMG AC,MINDST
02400 MOVE AC,MINDST
02500 SFH: MOVEM AC,HAND
02600 >
02700 IFN REPORT,<
02800 PUSH DATA,[<SIXBIT/HAND/>+1]
02900 PUSH DATA,HAND
03000 >
03100 SKIPN TAC,DIR
03200 JRST[ MOVE TAC,SET
03300 JRST GOTHER]
03400 FMPR TAC,TDF
03500 FADRB TAC,SET ;INCREMENT SET POINT
03600 FSBR TAC,RSET ;NEGATIVE REMAINS TO GO
03700 FMPR TAC,DIR
03800 JUMPGE TAC,[ MOVE TAC,RSET ;GOT THERE
03900 MOVEM TAC,SET
04000 SETZM DIR
04100 JRST GOTHER]
04200 MOVE TAC,SET
00100 GOTHER: FSBR AC,TAC ;HAND SERVO
00200 EXCH AC,HERR
00300 FSBR AC,HERR
00400 FMPR AC,KVH
00500 MOVN TAC,HERR
00600 FMPR TAC,KEH
00700 FADR AC,TAC
00800 TDO DATWD,[HANDAT:XWD 4000,60]
00900 JUMPGE AC,.+2
01000 TRZ DATWD,40
01100 MOVM AC,AC
01200 FIX AC,211000
01300 CAILE AC,776000
01400 MOVEI AC,776000
01500 TRC AC,400000
01600 HRLI AC,6
01700 IFN DEB<
01800 MOVEM AC,HANDAW
01900 >
02000 IFN TRACK,<SKIPN WALK>
02100 DATAO WIDTH,AC
02200 POPJ P,
02300 HSCALE: 1.32
02400 HOFF: -0.81
02500 DIR: 0 ;CHANGE OF SETPOINT PER JIFFY
02600 SET: 0 ;DYNAMIC SET POINT
02700 RSET: 0 ;FINAL SET POINT
02800 MINDST: 0 ;MIN OPENING FOR CLOSE
02900 HERR: 0 ;HAND POSITION ERROR
03000 KEH: 5.0 ;ERROR GAIN
03100 KVH: 10.0 ;VELOCITY GAIN
03200 IFN DEB<
03300 HANDAW: 0
03400 >
03500
00100 PLACE: ;PLACE HAND ON TABLE
00200 TRNN DROP ;ONLY COME HERE ONCE
00300 JRST[ TRO DROP+RUN
00400 MOVEI 1,=360
00500 MOVEM 1,COUNT
00600 HRRE 1,@STKPTR
00700 ADDI 1,(CBUF)
00800 HRLI 1,(1)
00900 HRRI 1,DELTH
01000 BLT 1,DELTH+5 ;CHANGE OF THETA PER JIFFY
01100 MOVEI 1,=12
01200 MOVEM 1,HCNT ;DON'T STOP FOR THE FIRST 12 JIFFIES
01300 MOVE DATWD,[770000252502]
01400 HRRZM DATWD,FBI
01500 JRST NXTJIF]
01600 SOSL HCNT
01700 JRST NXTJIF
01800 IFN USER,<JRST PLACED>
01900 EXL: MOVM AC,ET0+1
02000 CAML AC,PLER
02100 JRST PLACED
02200 JRST NXTJIF
02300 PLACED: SETZM FUNCT
02400 JRST RUDONE
02500 PLER: 0.6
02600
00100 NUDGE: HRRE TAC,@STKPTR
00200 ADDI TAC,5(CBUF)
00300 MOVEI I,5
00400 NUL1: MOVE AC,(TAC)
00500 MOVEM AC,DELTH(I)
00600 TRNE NSET
00700 JRST[ FADRM AC,TFF(I)
00800 MOVN AC,AC
00900 FADRM AC,DTH(I)
01000 JRST .+1]
01100 SOJ TAC,
01200 SOJGE I,NUL1
01300 TRZ NSET
01400 HRRE 1,@STKPTR
01500 ADDI 1,6(CBUF)
01600 PUSHJ P,UPDC
01700 HRRE 1,@STKPTR
01800 ADDI 1,6(CBUF)
01900 MOVE 2,7(1)
02000 ASH 2,16
02100 MOVEM 2,NTICKS
02200 ASH 2,-15
02300 ADDI 2,=60
02400 MOVEM 2,COUNT
02500 TRO INCREM+RUN
02600 SETZM TICKS
02700 TRZE BOTH
02800 JRST[ AOS AC,STKPTR
02900 HLRE AC,(AC)
03000 MOVEM AC,FUNCT
03100 JRST .+2]
03200 SETZM FUNCT
03300 JRST NXTJIF
03400
03500
03600 STOP: HRRE 1,@STKPTR
03700 ADDI 1,(CBUF)
03800 HRLI 1,(1)
03900 HRRI 1,STQ
04000 BLT 1,STQ+5
04100 MOVEI I,5
04200 SETZ AC,
04300 DSTQ: MOVE TAC,STQ(I)
04400 FDVR TAC,F0(I)
04500 MOVM MQ,TAC
04600 CAMGE MQ,[0.2]
04700 SETZB TAC,STQ(I)
04800 MOVEM TAC,STQ(I)
04900 FMPR TAC,TAC
05000 FADR AC,TAC
05100 SOJGE I,DSTQ
05200 MOVEM AC,SDTQ
05300 SETZM ASTPP
05400 TRO STP
05500 JRST NEXT
05600
05700 TOOL: TRNN HCL
05800 JRST[ HRRE TAC,@STKPTR
05900 MOVM AC,TAC
06000 CAIL AC,100
06100 MOVEI AC,77
06200 JUMPGE TAC,TDIP
06300 TRC AC,177
06400 TDIP: TRO AC,200
06500 HRRM AC,TDAT
06600 TRO HCL
06700 JRST .+1]
06800 SKIPG COUNT
06900 JRST[ SETZM TDAT
07000 DATAO DEVT,TDAT
07100 TRZ HCL
07200 JRST NEXT]
07300 DATAO DEVT,TDAT
07400 JRST NXTJIF
07500 TDAT: 0
07600
00100 PATH: TRO RUN
00200 AOS DOING ;INCREASE TRAJECTORY NUMBER
00800 MOVEI AC,=1800
00900 MOVEM AC,COUNT
01000 SETZM LOOP
01100 MOVE TAC,[XWD LOOP,LOOP+1]
01200 BLT TAC,LOOP+9
01300 MOVEI I,5
01400 HRRE K,@STKPTR
01500 ADDI K,34
01600 SUL: SUBI K,4
01700 HRLZM K,TJ(I)
01800 HRLZM K,TN(I)
01900 MOVEI TAC,TJ(I)
02000 MOVEM TAC,TP(I)
02200 SOJGE I,SUL
02300 SETZM ETIME
02400 PUSHJ P,EVAL
02500 TRZ INCREM
02510 HRRE TAC,@STKPTR
02528 ADDI TAC,(CBUF)
02546 HRRZ AC,(TAC)
02564 ASH AC,16
02582 MOVEM AC,NTICKS ;RUN TIME
02591 SETZM TICKS
02600 MOVEI I,5
02700 MOVBK: MOVE AC,TH(I)
02800 MOVEM AC,T0(I)
02900 FSBR AC,TFF(I)
03000 CAIN I,5
03100 JRST[ MOVSI MQ,(180.0)
03200 CAML AC,MQ
03300 JRST[SETROT:FSC MQ,1
03400 MOVN MQ,MQ
03500 FADRM MQ,TH+5
03600 FADRM MQ,ROT6
03700 JRST MOVBK]
03800 MOVN MQ,MQ
03900 CAMG AC,MQ
04000 JRST SETROT
04100 JRST ADDTF]
04200 ADDTF: MOVEM AC,DTH(I)
04300 MOVN AC,AC
04400 FADR AC,DDTH(I)
04500 SETZM DDTH(I)
04600 MOVEM AC,DELTH(I)
04700 SETZM TD(I)
04800 SOJGE I,MOVBK
04900 SETZM TICKS
05000 TRZE BOTH
05100 JRST[ AOS AC,STKPTR
05200 HLRE AC,(AC)
05300 MOVEM AC,FUNCT
05400 JRST .+2]
05500 SETZM FUNCT
05600 JRST NXTJIF
05700
00100 SAVE: HRRE K,@STKPTR
00200 ADDI K,(CBUF)
00300 MOVE TAC,(K)
00400 JUMPLE TAC,.+2
00500 CAILE TAC,12
00600 JRST[ MOVEI TAC,SAVERR
00700 MOVEM TAC,TRAJER
00800 JRST TOFF]
00900 IMULI TAC,3
01000 ADDI TAC,DTHS
01100 MOVEI J,2
01200 SAL1: MOVEI I,5
01300 SOJ TAC,
01400 SETZ AC,
01500 SAL2: AOJ K,
01600 MOVE MQ,DTH(I)
01700 FMPR MQ,(K)
01800 FADR AC,MQ
01900 SOJGE I,SAL2
02000 MOVEM AC,(TAC)
02100 SOJGE J,SAL1
02200 JRST NEXT
02300
02400 RESTORE:HRRE K,@STKPTR
02500 ADDI K,(CBUF)
02600 MOVE TAC,(K)
02700 JUMPLE TAC,.+2
02800 CAILE TAC,12
02900 JRST[ MOVEI TAC,SAVERR
03000 MOVEM TAC,TRAJER
03100 JRST TOFF]
03200 IMULI TAC,3
03300 ADDI TAC,DTHS-1
03400 ADDI K,22
03500 MOVEI I,5
03600 REL1: MOVE AC,(TAC)
03700 FMPR AC,(K)
03800 MOVE MQ,-1(TAC)
03900 FMPR MQ,-1(K)
04000 FADR AC,MQ
04100 MOVE MQ,-2(TAC)
04200 FMPR MQ,-2(K)
04300 FADR AC,MQ
04400 FADRM AC,DDTH(I)
04500 SUBI K,3
04600 SOJGE I,REL1
04700 JRST NEXT
04800
04900 TIMFAC: 0.3
05000 0.6
05100 3.0
05200 0.3
05300 0.3
05400 0.2
05500
05600 SET.ARM:HRRE I,@STKPTR
05700 ADDI I,(CBUF)
05800 HRRE AC,(I)
05900 SOJL AC,.+2
06000 CAIL AC,11
06100 JRST[ MOVEI TAC,SAVERR
06200 MOVEM TAC,TRAJER
06300 JRST TOFF]
06400 IMULI AC,3
06500 HRRI TAC,DTHS(AC)
06600 HRRZI MQ,2(TAC)
06700 HRLI TAC,1(I)
06800 BLT TAC,(MQ)
06900 JRST NEXT
07000
07100 SLAVE: MOVEI K,15B23
07200 MOVEI I,3
07300 SLRP: PUSHJ P,PREAD
07400 LDB AC,SNUM
07500 SUBI AC,4000
07600 MOVEM AC,POT(I)
07700 SOJGE I,SLRP
07800 TRNN HCL
07900 JRST[ TRO RUN
08000 MOVE DATWD,[770000252502]
08100 HRRZM DATWD,FBI
08200 TRO HCL
08300 MOVEI AC,=6000
08400 MOVEM AC,COUNT
08500 MOVEI I,3
08600 SLZL: MOVE AC,POT(I)
08700 MOVEM AC,POTZ(I)
08800 SOJGE I,SLZL
08900 JRST .+1]
09000 MOVEI I,3
09100 SLCH: MOVE AC,POT(I)
09200 SUB AC,POTZ(I)
09300 JUMPGE AC,[SUBI AC,400
09400 JUMPGE AC,SLST
09500 JRST SLZA]
09600 ADDI AC,400
09700 JUMPL AC,SLST
09800 SLZA: SETZ AC,
09900 SLST: FSC AC,213
10000 MOVEM AC,POT(I)
10100 SOJGE I,SLCH
10200 SKIPE POT+3
10300 JRST[ TRZ HCL
10400 TRO FINAL
10500 SETZM FUNCT
10600 JRST NXTJIF]
10700 HRRE K,@STKPTR
10800 ADDI K,21(CBUF)
10900 MOVEI I,5
11000 SLL2: MOVE AC,POT+2
11100 FMPR AC,(K)
11200 MOVE MQ,POT+1
11300 FMPR MQ,-1(K)
11400 FADR AC,MQ
11500 MOVE MQ,POT
11600 FMPR MQ,-2(K)
11700 FADR AC,MQ
11800 FMPR AC,TDF
11900 FADRM AC,DTH(I)
12000 SUBI K,3
12100 SOJGE I,SLL2
12200 JRST NXTJIF
12300 POT: BLOCK 4
12400 POTZ: BLOCK 4
12500
00100 CENTER: TRNN HCL
00200 JRST[ TRO HCL
00300 MOVEI TAC,=600
00400 MOVEM TAC,COUNT
00500 HRLZ AC,@STKPTR ;MINIMUN OPENING
00600 MOVEM AC,MINDST
00700 MOVSI AC,(4.0)
00800 MOVNM AC,RSET
00900 IFE USER,< PUSHJ P,HEAD>
01000 MOVE AC,HAND
01100 MOVEM AC,SET
01200 TRZ STCH
01300 MOVE TAC,[-0.02]
01400 MOVEM TAC,DIR
01500 JRST NXTJIF]
01600 PUSHJ P,HEAD
01700 IFE HANDWORK,<JRST ER2>
01800 DATAO ARM,DATWD
01900 TRNN DROP
02000 JRST[ MOVEI I,1
02100 CFT: MOVE AC,OBS(I)
02200 JUMPG AC,[SETZM TOT
02300 SKIPN I
02400 AOS TOT
02500 TRO DROP+RUN
02600 MOVE TAC,[-0.01]
02700 MOVEM TAC,DIR
02800 HRRE TAC,@STKPTR
02900 ADDI TAC,(CBUF)
03000 MOVE AC,(TAC)
03100 MOVEM AC,MINDST
03200 AOJ TAC,
03300 MOVEI I,DELTH
03400 OT: MOVE AC,(TAC)
03500 FMPR AC,[0.005]
03600 SKIPN TOT
03700 MOVNS AC
03800 MOVEM AC,(I)
03900 AOJ TAC,
04000 CAIGE I,DELTH+5
04100 AOJA I,OT
04200 MOVE TAC,[XWD 770000, 252500]
04300 HRRZM TAC,FBI
04400 IOR DATWD,TAC
04500 MOVSI AC,(1.0)
04600 MOVEM AC,TDF
04700 MOVEI I,4
04800 GETGO: PUSHJ P,NXTH
04900 SOJGE I,GETGO
05000 JRST NXTJIF]
05100 SOJGE I,CFT
05200 JRST NXTJIF]
05300 MOVE TAC,TOT
05400 SKIPG OBS(TAC)
05500 JRST NXTJIF
05600 TRZ DROP+RUN+FINAL
05700 PUSHJ P,SETSET
05800 TDZ DATWD,[XWD 770000,252500]
05900 MOVE TAC,DIR
06000 FSC TAC,3
06100 MOVEM TAC,DIR
06200 MOVEI TAC,2
06300 MOVEM TAC,FUNCT
06400 JRST NXTJIF]
06500 TOT: 0
06600
06700 WOBBLE: HRLZ AC,@STKPTR
06800 MOVEM AC,WOBMAG
06900 MOVEI AC,1
07000 MOVEM AC,WOBCNT+2
07100 MOVEM AC,WOBCNT+1
07200 MOVEI AC,6
07300 MOVEM AC,WOBCNT
07400 MOVN AC,WOBMAG
07500 FADRM AC,DTH+3
07600 TRO WOB
07700 JRST NEXT
07800 WOBMAG: 0
07900 WOBCNT: BLOCK 3
08000 SIN: 0.0
08100 0.30902
08200 0.58779
08300 0.80902
08400 0.95106
08500 1.0
08600 0.95106
08700 0.80902
08800 0.58779
08900 0.30902
09000 0.0
09100 -0.30902
09200 -0.58779
09300 -0.80902
09400 -0.95106
09500 -1.0
09600 -0.95106
09700 -0.80902
09800 -0.58779
09900 -0.30902
00100 SEARCH: SETZM XSEL
00200 SETZM SCOUNT
00300 SETZM TCOUNT
00400 HRRE 1,@STKPTR
00500 ADDI 1,(CBUF)
00600 HRLI 1,(1)
00700 HRRI 1,XDEL
00800 BLT 1,YDEL+5
00900 SETZM SDTH
01000 MOVE AC,[XWD SDTH,SDTH+1]
01100 BLT AC,SDTH+5
01200 JRST NEXT
01300
01400 AOJI: MOVEI I,5
01500 MOVE K,SCOUNT
01600 SOSG J,TCOUNT
01700 JRST[ SKIPN XSEL
01800 AOS K,SCOUNT
01900 SETCMM XSEL
02000 MOVEI J,(K)
02100 MOVEM J,TCOUNT
02200 JRST .+1]
02300 SKIPE XSEL
02400 JRST[IX:MOVE AC,XDEL(I)
02500 TRNN K,1
02600 MOVN AC,AC
02700 FADRB AC,SDTH(I)
02800 FADRM AC,DDTH(I)
02900 SOJGE I,IX
03000 JRST NJ]
03100 IY: MOVE AC,YDEL(I)
03200 TRNN K,1
03300 MOVN AC,AC
03400 FADRB AC,SDTH(I)
03500 FADRM AC,DDTH(I)
03600 SOJGE I,IY
03700 NJ: HRRE TAC,@STKPTR
03800 ADD TAC,STKPTR
03900 SOJ TAC,
04000 HRRM TAC,STKPTR
04100 JRST NEXT
04200
04300 TCOUNT: 0
04400 SCOUNT: 0
04500 XSEL: 0
04600 XDEL: BLOCK 6
04700 YDEL: BLOCK 6
04800 SDTH: BLOCK 6
04900
05000 HOME: HRRE TAC,@STKPTR
05100 ADDI TAC,5(CBUF)
05200 MOVEI I,5
05300 HLN: MOVE AC,(TAC)
05400 FADR AC,6(TAC)
05500 MOVEM AC,TFF(I)
05600 FSBR AC,T0(I)
05700 MOVNM AC,DTH(I)
05800 FADR AC,DDTH(I)
05900 SETZM DDTH(I)
06000 MOVEM AC,DELTH(I)
06100 SOJ TAC,
06200 SOJGE I,HLN
06300 MOVEI I,5
06400 MOVE TAC,DELTH+5
06500 CAML TAC,[180.0]
06600 JRST[ FSBR TAC,[360.0]
06700 JRST .-1]
06800 CAMGE TAC,[-180.0]
06900 JRST[ FADR TAC,[360.0]
07000 JRST .-1]
07100 MOVEM TAC,DELTH+5
07200 HRRE AC,@STKPTR
07300 ADDI AC,=12(CBUF)
07400 PUSHJ P,UPDC
07500 HRRE AC,@STKPTR
07600 ADDI AC,=12(CBUF)
07700 MOVE TAC,7(AC)
07800 ASH TAC,16
07900 MOVEM TAC,NTICKS
08000 MOVEI I,5
08100 SETZ MQ,
08200 HNCCA: MOVM TAC1,DELTH(I)
08300 FMPR TAC1,TIMFAC(I)
08400 CAML TAC1,MQ
08500 MOVE MQ,TAC1
08600 SOJGE I,HNCCA
08700 FADR MQ,[20.0]
08800 FIX MQ,215000
08900 CAML MQ,NTICKS
09000 MOVEM MQ,NTICKS
09100 ASH MQ,-15
09200 ADDI MQ,=60
09300 MOVEM MQ,COUNT
09400 TRO INCREM+RUN+NSET
09500 SETZM TICKS
09600 MOVE AC,STKPTR
09700 TRNE BOTH
09800 AOJ AC,
09900 HLRZ AC,1(AC)
10000 CAIE AC,5
10100 TRZ NSET
10200 TRZE BOTH
10300 JRST[ AOS AC,STKPTR
10400 HLRE AC,(AC)
10500 MOVEM AC,FUNCT
10600 JRST .+2]
10700 SETZM FUNCT
10800 JRST NXTJIF
10900
00100 REFLEX: MOVEI I,1
00200 MOVEI K,65B23
00300 REX:
00400 IFE USER,<
00500 PUSHJ P,PREAD
00600 LDB AC,[POINT 12,DACVAL,11]
00700 ADD AC,REF(I)
00800 MOVEM AC,OBS(I)
00900 >
01000 RMOR: SOJGE I,REX
01100 TRNN STCH
01200 POPJ P,
01300 MOVEI I,1
01400 SIT: MOVE AC,OBS(I)
01500 JUMPG AC,[ LSH I,3
01600 IORI I,TOUCH
01700 MOVEM I,TRAJER
01800 POP P,I
01900 JRST TOFF]
02000 SOJGE I,SIT
02100 POPJ P,
02200
02300 REF: -1000
02400 -1000
02500 BLOCK 4
02600 IFN SIMU,<
02700 OBS-1
02800 ARM.TO: .+4
02900 >
03000 OBS: 0
03100 0
03200 SOTCHS: 0
03300
03400 SETCH: MOVE AC,SOTCH
03500 MOVEM AC,SOTCHS
03600 HRLE AC,@STKPTR
03700 MOVEM AC,SOTCH
03800 JUMPE AC,NEXT
03900 TRO STCH
04000 JRST NEXT
04100
00100 XLIST
00200 LIT
00300 LIST
00400 IFE SIMU,<END START>
00500 IFN SIMU,<END>